﻿using System.Reflection;
using RedRiver.Framework.XtraCommon.FastReflection;

namespace RedRiver.Framework.XtraCommon.FastReflection{
    public static class FastReflectionCaches{
        static FastReflectionCaches(){
            MethodInvokerCache = new MethodInvokerCache();
            PropertyAccessorCache = new PropertyAccessorCache();
            FieldAccessorCache = new FieldAccessorCache();
            ConstructorInvokerCache = new ConstructorInvokerCache();
        }

        public static IFastReflectionCache<MethodInfo, IMethodInvoker> MethodInvokerCache{
            get;
            set;
        }

        public static IFastReflectionCache<PropertyInfo, IPropertyAccessor> PropertyAccessorCache{
            get;
            set;
        }

        public static IFastReflectionCache<FieldInfo, IFieldAccessor> FieldAccessorCache{
            get;
            set;
        }

        public static IFastReflectionCache<ConstructorInfo, IConstructorInvoker> ConstructorInvokerCache{
            get;
            set;
        }
    }
}